import { get, post, put, del } from '~/utils/request';
import type {
  IPaginationResponse,
  IPost,
  ICreatePost,
  IUpdatePost,
  IQueryPost
} from '@nbase/shared';

/**
 * 岗位信息
 */
export type Post = IPost;

/**
 * 创建岗位请求参数
 */
export type CreatePostDto = ICreatePost;

/**
 * 更新岗位请求参数
 */
export type UpdatePostDto = IUpdatePost;

/**
 * 查询岗位请求参数
 */
export type QueryPostDto = IQueryPost;

/**
 * 岗位服务
 */
export const postService = {
  /**
   * 获取岗位列表
   */
  getList(params?: QueryPostDto): Promise<IPaginationResponse<Post>> {
    return get('/system/post', { params });
  },

  /**
   * 获取所有岗位（不分页）
   */
  getAll(): Promise<Post[]> {
    return get('/system/post');
  },

  /**
   * 获取岗位详情
   */
  getById(id: string): Promise<Post> {
    return get(`/system/post/${id}`);
  },

  /**
   * 创建岗位
   */
  create(data: CreatePostDto): Promise<Post> {
    return post('/system/post', data);
  },

  /**
   * 更新岗位
   */
  update(id: string, data: UpdatePostDto): Promise<Post> {
    return put(`/system/post/${id}`, data);
  },

  /**
   * 删除岗位
   */
  delete(id: string): Promise<{ message: string }> {
    return del(`/system/post/${id}`);
  },
};

